package com.example.wifiunlockscreen.services;

import android.app.Activity;
import android.app.KeyguardManager;
import android.app.KeyguardManager.KeyguardLock;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.IBinder;
import android.support.v4.app.NotificationCompat;
import android.widget.Toast;
import broadcastReceivers.WifiBroadcastReceiver;

import com.example.wifiunlockscreen.Menu;
import com.example.wifiunlockscreen.R;
import com.example.wifiunlockscreen.support.WifiInfoManager;

public class UnlockScreenService extends Service {

	private BroadcastReceiver receiver;
	
	WifiInfoManager wifiInfoObjet;
	
    @Override
    public void onCreate() {
          //Toast.makeText(this,"Servicio creado", Toast.LENGTH_SHORT).show();
          
          //Iniciamos el receptor de eventos
          	//Movido al onStartCommand


          
          

    }

    @SuppressWarnings("deprecation")
	@Override
    public int onStartCommand(Intent intenc, int flags, int idArranque) {
          //Toast.makeText(this,"Servicio arrancado "+ idArranque, Toast.LENGTH_SHORT).show();
          
         /**if(idArranque>1){
         	  Toast.makeText(this,"Ya existe un servicio "+ idArranque, Toast.LENGTH_SHORT).show();
          }else{*/
        	  //Obtener el nombre del Wifi conectado y validar que exista en BBDD, si existe, llamar al metodo.
          
          		//Ya no se valida en el servicio el nombre de la wifi conectada, se pregunta en el receptor y se valida en el Manager
        	  /*String name = wifiInfoObjet.getCurrentSsid(this);
        	  if(name !=null && name.replace("\"", "").equals("ASTRO")){
        		  //disableLock();
        		  wifiInfoObjet.disableLock(this);
        	  }else{
        		  wifiInfoObjet.enableLock(this);
        	  }*/
          
        	  
         // }
          
          if(idArranque>1){//Si el ID de arranque es mayor que 1 es porque se han arrancado mas de 1 sercicio, debemos matarlos y dejar el ultimo
        	  for(int i = idArranque-1;i>0;i--){
        		  stopSelf(i);
        	  }
          }
          
          //Iniciamos el receptor al llamar al Servicio
          	/*Pienso que si lo hago en el onCreate puedo crear el servicio pero no el receptor, lo que hace que no funcione bien*/
          wifiInfoObjet = new WifiInfoManager(this);
          // Register Broadcast Receiver
          if (receiver == null){
        	  //Toast.makeText(this,"No hay Receptor corriendo", Toast.LENGTH_SHORT).show();
        	  
              receiver = new WifiBroadcastReceiver(wifiInfoObjet);
              wifiInfoObjet.setReceiver(receiver);
              
              final IntentFilter filters = new IntentFilter();
              filters.addAction("android.net.wifi.WIFI_STATE_CHANGED");
              filters.addAction("android.net.wifi.STATE_CHANGE");
              filters.addAction(Intent.ACTION_SCREEN_ON);
              filters.addAction(Intent.ACTION_SCREEN_OFF);
              filters.addAction(Intent.ACTION_USER_PRESENT);
              registerReceiver(receiver, filters);
          }
          
          
          return START_STICKY;
          

          
    }

    @Override
    public void onDestroy() {
          //Toast.makeText(this,"Servicio detenido", Toast.LENGTH_SHORT).show();
          wifiInfoObjet.enableLock(this);
          unregisterReceiver(receiver);
          wifiInfoObjet.finalizeStats();//Ejecutar siempre al final
          wifiInfoObjet = null;
    }
	
	@Override
	public IBinder onBind(Intent arg0) {
		// TODO Auto-generated method stub
		return null;
	}


}
